﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Negocio = PSE.Tools.CadastroMensagens.Negocio;
using PSE.Tools.Util.Entidades;

namespace PSE.Tools.CadastroMensagens.Apresentacao
{
    public class Excecoes
    {
        private IApresentacao _apresentacao;
        private Negocio.Excecoes _negocioExcecao;
        public Excecoes(IApresentacao apresentacao, Negocio.Excecoes negocioExcecao)
        {
            _apresentacao = apresentacao;
            _negocioExcecao = negocioExcecao;
        }

        public IList<Entidades.Excecao> Lista(Entidades.ExcecaoFiltro filtro)
        {
            try
            {
                return _negocioExcecao.Selecionar(filtro);
            }
            catch (Exception ex)
            {
                _apresentacao.EnviarMensagemErro(ex.Message);
                return null;
            }
        }

        public void Inserir(Entidades.Excecao Excecao)
        {
            try
            {
                Excecao.CriadoPor = "p-angsilva";
                _negocioExcecao.Inserir(Excecao);
            }
            catch (ValidacaoEntidadeException ex)
            {
                _apresentacao.EnviarMensagemValidacao(ex.Validacoes);
            }
            catch (Exception ex)
            {
                _apresentacao.EnviarMensagemErro(ex.Message);
            }
        }

        public void Atualizar(Entidades.Excecao Excecao)
        {
            try
            {
                Excecao.AtualizadoPor = "p-angsilva";
                _negocioExcecao.Atualizar(Excecao);
            }
            catch (ValidacaoEntidadeException ex)
            {
                _apresentacao.EnviarMensagemValidacao(ex.Validacoes);
            }
            catch (Exception ex)
            {
                _apresentacao.EnviarMensagemErro(ex.Message);
            }        
        }

        public void Excluir(Entidades.Excecao Excecao)
        {
            try
            {
                _negocioExcecao.Inserir(Excecao);
            }
            catch (ValidacaoEntidadeException ex)
            {
                _apresentacao.EnviarMensagemValidacao(ex.Validacoes);
            }
            catch (Exception ex)
            {
                _apresentacao.EnviarMensagemErro(ex.Message);
            }
        }
    }
}
